package net.zjitc.android2019.note;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 * 数据库操作类：
 * 1、必须重写的方法
 *    构造方法（建库）、onCreate（建表语句）、onUpgrade（修改表结构）
 * 2、增加方法：
 *    增删改查方法、获取当前时间方法 *
 */
public class NoteSQLiteHelper extends SQLiteOpenHelper {
    private SQLiteDatabase db;

    /**
     * 构造方法
     * @param context
     */
    public NoteSQLiteHelper(Context context) {
        super(context, "note.db", null, 1);
        /* 初始化*/
        db=getWritableDatabase();
    }

    /**
     * 只执行一次
     * 创建表（表中的字段跟实体类中的属性一一对应）
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="create table note(id integer primary key autoincrement,content text,time text)";
        db.execSQL(sql);
    }

    /**
     * 数据库升级执行，当版本更新时
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }


    /**
     * 获取系统当前时间
     * @return
     */
    public String getTime(){
        /* 获取系统当前时间*/
        Date date=new Date(System.currentTimeMillis());
        /* 时间的格式*/
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        return simpleDateFormat.format(date);

    }

    /**
     * 保存/添加数据，将记录保存在SQLite
     * @param content
     * @param time
     * @return
     */
    public boolean insertData(String content,String time){
        /*String sql="insert into note(content,time) values(?,?)";
        db.execSQL(sql,new Object[]{content,time});
        return true;*/

        ContentValues cv=new ContentValues();
        cv.put("content",content);
        cv.put("time",time);
        /*long a= db.insert("note",null,cv);
        if(a>0){
            return true;
        }else{
            return false;
        }*/

        return db.insert("note",null,cv)>0;
    }

    /**
     * 删除数据，根据id来删除
     * @param id
     * @return
     */
    public boolean deleteDate(int id){
      return db.delete("note","id=?",new String[]{id+""})>0 ;
    }

    /**
     * 修改数据，根据id来修改
     * @param id
     * @param content
     * @param time
     * @return
     */
    public boolean updateData(int id,String content,String time){
        ContentValues cv=new ContentValues();
        cv.put("content",content);
        cv.put("time",time);
        return db.update("note",cv,"id=?",new String[]{id+""})>0;
    }

    /**
     * 查询
     * @return
     */
    public ArrayList<NoteBean>  query(){
        ArrayList<NoteBean> list=new ArrayList<NoteBean>();
        String sql="select * from note order by time desc";
        Cursor cursor=db.rawQuery(sql,null);
        while (cursor.moveToNext()){
            /* 从游标中取出数据，
            *  封装在NoteBean对象中
            *  添加到ArrayList*/
            int id=cursor.getInt(cursor.getColumnIndex("id"));
            String content=cursor.getString(cursor.getColumnIndex("content"));
            String time=cursor.getString(cursor.getColumnIndex("time"));

            NoteBean noteBean=new NoteBean(id,content,time);
            list.add(noteBean);
        }
        cursor.close();
        return list;
    }

}
